www.gusucode.com > Non-photorealistic Camera工具箱源码matlab程序 > Non-photorealistic Camera/removeSpecRegions.m

    function [guO,grO,gdO,glO] = removeSpecRegions(gu,gr,gd,gl)
%removeSpecRegions function: remove (or reduce) specular regions from four
%images captured using different flashes. The four arguments are the
%grayscale versions of the original images. 

gImages={gu,gr,gd,gl};
%calculate medians for each loop
Gmedian(1,:)=median([gr(:)';gd(:)';gl(:)']);
Gmedian(2,:)=median([gu(:)';gd(:)';gl(:)']);
Gmedian(3,:)=median([gu(:)';gr(:)';gl(:)']);
Gmedian(4,:)=median([gu(:)';gr(:)';gd(:)']);
for i=1:4
    currentImage=gImages{i};
    currentImage=currentImage(:);
    indices=find(currentImage>200);
    indices_=indices(Gmedian(i,indices)<200);
    currentImage(indices_)=Gmedian(i,indices_);
    gImages{i}=reshape(currentImage,[size(gu,1),size(gu,2)]);
end

guO=gImages{1};
grO=gImages{2};
gdO=gImages{3};
glO=gImages{4};